use axum::Router;
use http::Method;
use tower_http::cors::{Any, CorsLayer};
use AxumServer::{router, GlobalInfra};

#[tokio::main]
async fn main() -> Result<(), Box<dyn std::error::Error>> {
    // 初始化日志
    tracing_subscriber::fmt::init();
    // 初始化全局数据
    GlobalInfra::init().await?;

    // CORS配置
    let cors = CorsLayer::new()
        .allow_methods([Method::GET, Method::POST, Method::PUT, Method::DELETE])
        .allow_origin(Any)
        .allow_headers(Any);

    // 创建路由
    let app = Router::new().nest("/api", router::create_router()).layer(cors);

    let listener = tokio::net::TcpListener::bind("0.0.0.0:3000").await?;
    println!("🚀🚀🚀 服务器已启动: 监听端口: 3000");
    axum::serve(listener, app.into_make_service()).await?;
    Ok(())
}
